package com.distrimas.senta.dominio.contabilidad.nomina;

import java.sql.Connection;
import java.sql.PreparedStatement;
import com.distrimas.senta.servicios.conexion.Conexion;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class EmpleadoDAO {

    private static EmpleadoDAO dao;

    public static EmpleadoDAO getEmpleadoDAO(){
        if(dao==null){
        dao=new EmpleadoDAO();
        }
        return dao;
    }

    public EmpleadoDTO getEmpleado(EmpleadoDTO empleado){
        EmpleadoDTO result = new EmpleadoDTO();
        Connection con = null;
        try{
            con = Conexion.getConnection();
            PreparedStatement p = con.prepareStatement(EmpleadoDAOHelper.getEmpleados());
            ResultSet r = p.executeQuery();
                while(r.next()){
                    EmpleadoDTO e = new EmpleadoDTO();
                    e.setId(r.getString(1));
                    e.setNombre(r.getString(2));
                    e.setApellido(r.getString(3));
                    e.setTelefono_fijo(r.getString(4));
                    e.setTelefono_movil(r.getString(5));
                    e.setDireccion(r.getString(6));
                    e.setSalario(r.getFloat(7));
                    e.setFecha_vinculacion(r.getString(8));
                    e.setFecha_nacimiento(r.getString(9));
                    PreparedStatement q = con.prepareStatement(EmpleadoDAOHelper.getJefe());
                    ResultSet h=q.executeQuery();
                   // e.setJefe(r.getString(10));
                    //e.setSede(r.getString(11));
                    e.setEstado(r.getString(12));
                    //e.setCargo(r.getString(13));
                }
        }
        catch(Exception ex){
            ex.printStackTrace();
        }
        finally{
            try{
                Conexion.returnConnection(con);
            }
            catch(Exception c){
            }
        }
        return result;
    }

    public boolean ingresarEmpleado(EmpleadoDTO e){
        Connection con = null;
        boolean result = true;
        try{
            con = Conexion.getConnection();
            PreparedStatement p = con.prepareStatement(EmpleadoDAOHelper.ingresarEmpleado());
            p.setString(1, e.getId());
            p.setString(2, e.getNombre());
            p.setString(3, e.getApellido());
            p.setString(4, e.getTelefono_fijo());
            p.setString(5, e.getTelefono_movil());
            p.setString(6, e.getDireccion());
            p.setFloat(7, e.getSalario());
            p.setString(8, e.getFecha_vinculacion());
            p.setString(9, e.getFecha_nacimiento());
         //   p.setString(10, e.getId_jefe());
           // p.setString(11, e.getCodigo_sede());
            p.setString(12, e.getEstado());
            //p.setString(13, e.getCodigo_cargo());
            p.execute();

            } catch(Exception ex){
                ex.printStackTrace();
                result = false;
            }finally{
            try{
              Conexion.returnConnection(con);
            }catch(Exception clo){}

            }
        return result;
	}

    public List<EmpleadoDTO> getEmpleados(){
        List<EmpleadoDTO> result = new ArrayList<EmpleadoDTO>();
        Connection con = null;
        try{
            con = Conexion.getConnection();
            PreparedStatement p = con.prepareStatement(EmpleadoDAOHelper.getEmpleados());
            ResultSet r = p.executeQuery();
                while(r.next()){
                    EmpleadoDTO e = new EmpleadoDTO();
                    e.setId(r.getString(1));
                    e.setNombre(r.getString(2));
                    e.setApellido(r.getString(3));
                    e.setTelefono_fijo(r.getString(4));
                    e.setTelefono_movil(r.getString(5));
                    e.setDireccion(r.getString(6));
                    e.setSalario(r.getFloat(7));
                    e.setFecha_vinculacion(r.getString(8));
                    e.setFecha_nacimiento(r.getString(9));
                  //  e.setId_jefe(r.getString(10));
                   // e.setCodigo_sede(r.getString(11));
                    e.setEstado(r.getString(12));
                    //e.setCodigo_cargo(r.getString(13));
                }
        }
        catch(Exception ex){
            ex.printStackTrace();
        }
        finally{
            try{
                Conexion.returnConnection(con);
            }
            catch(Exception c){
            }
        }
        return result;
    }

    public boolean eliminarEmpleado (String id){
        boolean result = true;
        Connection con=null;
        try{
            con= Conexion.getConnection();
            PreparedStatement p= con.prepareStatement (EmpleadoDAOHelper.eliminarEmpleado());
            p.setString(1, id);
            p.execute();
        }
        catch (Exception ex){
            ex.printStackTrace();
            result=false;
        }
        finally{
            try{
                Conexion.returnConnection(con);
            }
            catch (Exception clo){
            }
        }
        return result;
    }

    public boolean actualizarEmpleado (EmpleadoDTO e){
        boolean result = true;
        Connection con=null;
        try{
            con= Conexion.getConnection();
            PreparedStatement p= con.prepareStatement (EmpleadoDAOHelper.actualizarEmpleado());
            p.setString(1, e.getNombre());
            p.setString(2, e.getApellido());
            p.setString(3, e.getTelefono_fijo());
            p.setString(4, e.getTelefono_movil());
            p.setString(5, e.getDireccion());
            p.setFloat(6, e.getSalario());
            p.setString(7, e.getFecha_nacimiento());
         //   p.setString(8, e.getId_jefe());
           // p.setString(9, e.getCodigo_sede());
            p.setString(10, e.getEstado());
           // p.setString(11, e.getCodigo_cargo());
            p.setString(12, e.getId());
            p.execute();
        }
        catch (Exception ex){
            ex.printStackTrace();
            result=false;
        }
        finally{
            try{
                Conexion.returnConnection(con);
            }
            catch (Exception clo){
            }
        }
        return result;
    }

    public EmpleadoDTO consultarEmpleado (String s){
        EmpleadoDTO result = new EmpleadoDTO();
        Connection con=null;
        try{
            con= Conexion.getConnection();
            PreparedStatement p= con.prepareStatement (EmpleadoDAOHelper.consultarEmpleado());
            p.setString(1, s);
            ResultSet r= p.executeQuery();
            while(r.next()){
                result.setId(r.getString(1));
                result.setNombre(r.getString(2));
                result.setApellido(r.getString(3));
                result.setTelefono_fijo(r.getString(4));
                result.setTelefono_movil(r.getString(5));
                result.setDireccion(r.getString(6));
                result.setSalario(r.getFloat(7));
                result.setFecha_vinculacion(r.getString(8));
                result.setFecha_nacimiento(r.getString(9));
              //  result.setId_jefe(r.getString(10));
               // result.setCodigo_sede(r.getString(11));
                result.setEstado(r.getString(12));
                //result.setCodigo_cargo(r.getString(13));

            }
        }
        catch (Exception ex){
            ex.printStackTrace();
            //result=false;
        }
        finally{
            try{
                Conexion.returnConnection(con);
            }
            catch (Exception clo){
            }
        }
        return result;
    }

    public EmpleadoDAO getDao(){
        return dao;
      }

    public void setDao(EmpleadoDAO dao){
        EmpleadoDAO.dao = dao;
      }

}
